<?php
/*
 * Datei: modify_person.php
 * Funktion: Modifiziert einen bestehenden Personen-Datenstz in der Datenbank.
 *           Beinhaltet zudem auch das HTML-Formular zur Änderung der
 *           Personaldaten
 * Autor:    Alexander Palmer
 * Version:  01.03.2013
 */

require_once ('../../lib/database.inc.php');
require_once ('../../lib/html.inc.php');

// Wurde der Button mit dem Name-Attribut angeklickt? Wenn ja, dann wurde
// ein POST-Request ausgelöst und der Button an das POST-Array übergeben.    
if (isset($_POST['submit'])) {
  // Einlesen des Eingabefeldes mit dem name-Attribut 'description'
  $fn = $_POST['firstname'];
  $ln = $_POST['lastname'];
  $sx = $_POST['sex'];
  $dp = $_POST['department'];

  // Hier lesen wir das hidden-Field ein, in welchem wir versteckt den
  // Primär-Key des zu modifizierenden Datensatzes hinterlegt haben.
  $pid = $_POST['id'];

  // Wenn die Variable leer oder zu kurz ist, wird ein allgemeines
  // sowie ein spezielles Error-Flag gesetzt.
  // Das allgemeine Error-Flag wird später dazu benutzt, ob das Einfügen
  // des Datensatzes in die Datenbank überhaupt erfolgen soll, bzw.
  // ob eine allgemeine Fehlermeldung ausgegeben wird.
  // Das spezifische Error-Flag wird für die genaue Fehlermeldung
  // Ausgabe benutzt, um genau das Eingabefeld definieren zu können,
  // welches falsch oder nicht eingegeben wurde.
  if (empty($fn) || strlen($fn) < 1) {
    $error = true;
    $errorFN = true;
  }

  if (empty($ln) || strlen($ln) < 1) {
    $error = true;
    $errorLN = true;
  }

  if (empty($sx)) {
    $error = true;
    $errorSX = true;
  }

  if (empty($dp) || trim($dp) == 'null') {
    $error = true;
    $errorDP = true;
  }

  // Jetzt kommt das allgemeine Error-Flag zu Einsatz. Wenn dieses nicht
  // gesetzt wurde (beachte das ! vor der isset-Funktion), dann darf in die
  // Datenbank geschrieben werden, ansonsten werden die folgenden Zeilen
  // einfach übersprungen.
  if (!isset($error)) {
    // Verbindung zur Datenbank herstellen
    $link = connectDB();
    $sql = "UPDATE person SET firstname='$fn', lastname='$ln',
            sex='$sx', id_dep_fk='$dp' WHERE person.id='$pid'";
    $status = mysqli_query($link, $sql);
    // Mit dieser Anweisung springt das Skript zurück auf read.php
    // Somit verhindernw wird, dass das HTML-Formular unten erneut
    // dargestellt wird.
    header('Location: show_person.php');
  }
}
generateHeader('Person modifizieren', '../css/default.css');
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Bestehende Person modifizieren</title>
    <link href="../css/default.css" type="text/css" rel="stylesheet" />
  </head>
  <body>
    <h1>Person modifizieren</h1>
    <?php
    // Wenn ein allgemeiner Fehler entdeckt wurde, wir die folgende
    // Fehlermeldung ausgegeben.
    if (isset($error)) {
      echo '<p class="error">Nicht alle Felder sind korrekt ausgef&uuml;llt<p>';
    }

    // Wenn das Skript das erste mal geladen wird, dann müssen wir uns
    // den Datensatz aus der Datenbank via des übergebenen Primär-Keys
    // beschaffen. 
    if (!isset($_POST['submit'])) {
      // Beschaffen des Primary Key zur Beschaffung des zu modifizierenden
      // Datensatzes
      $pid = $_GET['id'];

      // Verbindung zum Datenbankserver herstellen
      $link = connectDB();

      // Nun beschaffen wir uns den zu modifizierenden Datensatz mit der Hilfe
      // des Wertes in $idPerson aus der Datenbank
      $sql = "SELECT person.id as pid, firstname, lastname, sex, 
                id_dep_fk as did FROM 
                person, department WHERE person.id=$pid";

      // Das SQL-Statement an die Datenbank senden und Antwort auffangen
      $result = mysqli_query($link, $sql);

      // Es kann nur einen geben: Damit ist der Datensatz gemeint. Daher
      // können wir auf die Schleife verzichten und verwandeln den 
      // Datensatz aus der Datenbank in ein Array mit dem Namen $row.
      $row = mysqli_fetch_array($result);

      // Nun extrahieren wir alle notwendigen Daten aus dem Array 
      // in entsprechende Hilfsvariablen. Somit müssen wir den HTML
      // Teil nicht allzu umfassend anpassen.

      $fn = $row['firstname'];
      $ln = $row['lastname'];
      $sx = $row['sex'];
      $dp = $row['did'];
    }
    ?>
    <div id="content">
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
        <table border="1" width="400">
          <tr <?php if (isset($errorFN)) echo 'class="error"'; ?>>
            <td>Vorname:</td>
            <td>
              <input type="text" value="<?php echo $fn; ?>" 
                     name="firstname" />
            </td>
          </tr>
          <tr <?php if (isset($errorLN)) echo 'class="error"'; ?>>
            <td>Nachname:</td>
            <td>
              <input type="text" value="<?php echo $ln; ?>" 
                     name="lastname" />
            </td>
          </tr>
          <tr <?php if (isset($errorSX)) echo 'class="error"'; ?>>
            <td>Geschlecht:</td>
            <td>
              <?php
              echo 'm&auml;nnlich';

              if (trim($sx) == 'm')
                $sel = 'checked';
              else
                $sel = '';
              echo '<input type="radio" value="m" ' . $sel .
              ' name="sex" />';

              echo 'weiblich';

              if (trim($sx) == 'f')
                $sel = 'checked';
              else
                $sel = '';
              echo '<input type="radio" value="f" ' . $sel .
              ' name="sex" />';
              ?>
            </td>
          </tr>
          <tr <?php if (isset($errorDP)) echo 'class="error"'; ?>>
            <td>Abteilung:</td>
            <td>
              <select name="department">
                <option value="null">Bitte w&auml;hlen Sie</option>
                <?php
                $link = connectDB();

                $sql = "SELECT * FROM department";

                $result = mysqli_query($link, $sql);

                while ($row = mysqli_fetch_array($result)) {
                  echo '<option value="' . $row['id'] . '" ';
                  if ($row['id'] == $dp)
                    echo ' selected ';
                  echo '>' .
                  $row['description'] .
                  '</option>';
                }
                ?>
              </select>
            </td>
          </tr>
          <tr>
            <td><input type="hidden" name="id" 
                       value="<?php echo $pid; ?>" /></td>
            <td>
              <input type="submit" value="speichern" name="submit" />
            </td>
          </tr>
        </table>
      </form>
    </div>
    <div id="navigation">
      <p><a href="show_person.php">Zur&uuml;ck zu alle Personen 
          anzeigen</a></p>
    </div>
<?php generateFooter(); ?>